<?php

App::uses('AppController', 'Controller');

class RecorridosRealizadosEventosController extends AppController {

	/**
	 * 				CONTROLLER DATA MEMBERS
	 */
	  /**
	 * Componennte de sesion de cake
	 *
	 * En este archivo se usa la sesión para poder usar la función setFlash
	 *
	 * @var array(string)
	 */
	public $components = array('Session');
	/**
	 * Nombre del controlador
	 *
	 * @var string
	 */
	public $name = "RecorridosRealizadosEventos";
	/**
	 * Modelos que utiliza
	 *
	 * Los modelos que usa el controller. Por defecto
	 * cake usa el singular basado en el nombre del modelo,
	 * pero por asuntos del idioma siempre se ingresa el modelo
	 * para evitar posibles problemas.
	 *
	 * @var array(string)
	 */
	public $uses = array("RecorridoRealizadoEvento");

	/**
	 * 				CONTROLLER CALLBACKS METHODS
	 */

	// public function beforeFilter() {

	// }

	// public function afterFilter() {
		
	// }

	// public function beforeRender() {

	// }

	/**
	 * 				CONTROLLER METHODS (ACTIONS)
	 */
	/**
	 * Action por defecto para los recorridos realizados eventos
	 *
	 * Este es el metodo base de los recorridos realizados eventos, en este metodo
	 * se buscan los recorridos realizados eventos almacendos en el sistema y se 
	 * devuelven a la vista para que el usuario pueda realizar
	 * acciones sobre ellos
	 *
	 * @return void
	 */
	public function index(){
		$this->set('recorridos_realizados_eventos',$this->RecorridoRealizadoEvento->find('all'));
	}

	/**
	 * Consultar la información de un recorrido realizado evento especifico
	 *
	 * En este metodo se busca la parada según el parametro de
	 * entrada $id_recorrido_realizado_evento, si dicho parametro es nulo o si no se encuentra
	 * un recorrido realizado evento con ese identificador asociado se devulve un error.
	 * por otro lado si se encuentra el recorrido realizado evento se devuelve su 
	 * información a la vista para que sea procesada.
	 * 
	 *
	 * @param int $id_recorrido_realizado_evento identifiacador del recorrido realizado evento que se va a buscar.
	 * @return void
	 */
	public function ver($id=null){
		if (!$id){
			throw new NotFoundException(__('Recorrido Realizado Evento inválido'));
		}
		$recorrido_realizado_evento = $this->RecorridoRealizadoEvento->findByid_recorrido_realizado_evento($id);
		if (!$recorrido_realizado_evento){
			throw new NotFoundException(__('Recorrido Realizado Evento inválido'));
		}
		$this->set('recorrido_realizado_evento',$recorrido_realizado_evento);
	}

	/**
	 * Adiciona un nuevo recorrido realizado evento
	 *
	 * Este metodo adiciona un nuevo recorrido realizado evento a la base de datos
	 * 
	 * La función verifica que el request es un post, de esa 
	 * se da cuenta si se esta guardando un nuevo recorrido realizado evento o si
	 * simplemente se esta haciendo un llamado a la vista de
	 * este action. Se adicionan los campos de auditoría, y se
	 * verifica si el recorrido realizado evento fue almacenado correctamente.
	 *
	 * @return void
	 */
	public function agregar(){
		$this->set(array(
				"eventos"=>$this->RecorridoRealizadoEvento->Evento->find('all'),
				"recorridos_realizados"=>$this->RecorridoRealizadoEvento->RecorridoRealizado->find('all'),
			)
		);

		if($this->request->is('post')){
			$this->RecorridoRealizadoEvento->create();
			if($this->RecorridoRealizadoEvento->save($this->request->data)){
				$this->Session->setFlash('el recorrido realizado evento ha sido guardado');
				$this->redirect(array('action'=>'index'));
			}else{
				$this->Session->setFlash('el recorrido realizado evento no ha sido guardado');
			}
		}
	}

	/**
	 * Editar un recorrido realizado evento previamente almacenado
	 *
	 * Se verifica que el parametro $id no sea nulo y luego se busca el
	 * recorrido realizado evento a editar, en caso de tener el parametro vacio o de no 
	 * encontrar el recorrido realizado evento se lanza una exception con el mensaje de 
	 * error correspondiente. Posteriormente se verifica si se están 
	 * almacenando los nuevos datos del recorrido realizado evento, de ser asi se guardan 
	 * estos nuevos datos y el metodo termina. De lo contrario se asume
	 * que se esta haciendo un get de la vista de editar y por eso se
	 * devuelven los datos del recorrido realizado evento para que sean presentados en la
	 * vista de edición.
	 *
	 * @param int $id identifiacador del recorrido realizado evento que se va a editar.
	 * @return void
	 */

	public function editar($id=null){
		if (!$id) {
			throw new NotFoundException('Recorrido realizado evento inválido');
		}

		$recorrido_realizado_evento = $this->RecorridoRealizadoEvento->findByid_recorrido_realizado_evento($id);
		if (!$recorrido_realizado_evento) {
			throw new NotFoundException('Recorrido realizado evento inválido');
		}

		if ($this->request->is('post') || $this->request->is('put')) {
			$this->request->data['RecorridoRealizadoEvento']['id_recorrido_realizado_evento'] = $id;
			if ($this->RecorridoRealizadoEvento->save($this->request->data)) {
				$this->Session->setFlash('Recorrido realizado evento actualizado exitosamente');
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash('Recorrido realizado evento no actualizado');
			}
		}

		if (!$this->request->data) {
			$this->request->data = $recorrido_realizado_evento;
		}
		$this->set(array(
				"eventos"=>$this->RecorridoRealizadoEvento->Evento->find('all'),
				"recorridos_realizados"=>$this->RecorridoRealizadoEvento->RecorridoRealizado->find('all'),
			)
		);
	}
	/**
	 * Borra un recorrido realizado evento de la base de datos
	 *
	 * Se verifica que el request no sea un get para
	 * minimzar la probabilidad de errores. Luego se borra el recorrido realizado evento
	 * indicado.
	 *
	 * @param int $id_recorrido_realizado_evento identifiacador de la parada que se va a editar.
	 * @return void
	 */
	public function eliminar($id_recorrido_realizado_evento=null){
		if ($this->request->is('get')){
			throw new MethodNotAllowedException();
		}

		if ($this->RecorridoRealizadoEvento->delete($id_recorrido_realizado_evento)){
			$this->Session->setFlash("el recorrido realizado evento con id: ".$id_recorrido_realizado_evento." ha sido eliminado");
			$this->redirect(array('action'=>'index'));
		}
	}
}